home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
program
/
tvtoys04.zip
/
README.TXT
< prev
next >
Wrap
Text File
|
1993-12-18
|
32KB
|
829 lines
TVToys
Version 1.4
December 1993
Far Niente Productions
Contents ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀
Introduction
Copyright
Short Description
Package File List
Instructions
Porting
Suggestions
Turbo Pascal 6.0 Users
Compatibility Testing
Coding Style
Protected Mode Information
Overlay Information
PC Video Modes
Video 7
The Improved Help File
Extended Video Mode Support Code
Custom Fonts
The NewMouse Unit
EXE Stream Unit
VideoModeChanged Variable
Changes
Credits
Author, Support, Info, Bugs etc
To Do List
Introduction ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Welcome to TVToys!
This is a collection of useful stuff that should be available to all
Turbo Vision programmers. It is intended for Turbo Pascal 7.0 but would
be possible to port to TP6. The font, palette and video mode code can
be used in plain text mode without Turbo Vision.
THE SOURCE IS FREE AND COMES WITH NO WARRANTIES WHATSOEVER.
I hope that you will find this package useful. Have fun with it!
Copyright ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
You may use this package for free and pass it on to other persons as
long as you clearly state, in the header as well as in the code, all
changes made to the original code.
You may not pass along compiled versions of the source, except as
executable files.
You may also upload this package, unmodified, to bulletin boards or
other public access places.
There must be no charge associated with this package, though you may
include the unmodified package as a whole in shareware/freeware
compilations if only a nominal amount is charged for the compilation
disk.
I strongly urge people with money to spare to donate a small token
of appreciation in the $20 range. That's 5 campus meals for me.
Short Description ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
This package includes:
An improved Help viewer with back tracking and the possibility to add
Contents and Index pages or whatever without recompiling HelpFile.
Extended video mode support. Code that determines what video modes are
available and presents a list for the user to choose from. Video7 and
VESA support included.
Custom fonts. Support for three different font file formats.
Palette routines. Change the EGA/VGA palette.
A mouse unit that limits the effects of buggy mouse drivers in extended
video modes.
Three demonstration programs, personal configuration files.
Lots of commented code, tried and tested.
Package File List ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The package consists of the following files:
TOYAPP.PAS The fast way to incorporate TVToys in your own app.
HELPFILE.PAS Improved HelpFile with back tracking and external commands
HELPTEST.PAS Demonstration of HelpFile
HELPCTX.PAS Help contexts generated by TVHC
HELPTEST.HLP Demo Help text compiled with TVHC
HELPTEST.TXT The Help text source
VIDEO.PAS A unit supporting extended video mode setting and searching
MODEDLG.PAS Dialog for presenting and selecting video modes
TVVIDEO.PAS TV support for all the new video modes
VIDEOTST.PAS Demonstration of Video, ModeDlg and TVVideo
IMPRTANT.PAS Warning dialog used by VideoTst
FONTFILE.PAS Custom font file loading and storing
FONTDLG.PAS Custom font file selection dialog
CHIC12.COM Very nice font to get you going!
DBLSTR.PAS Special string class used by font file selection listbox
COLORBOX.PAS Color selection box with a twist
PAL.PAS EGA/VGA palette handling
TVPAL.PAS TV palette changing dialog
SCROLL.PAS Scrollbar with instantanious dragging updates
RESTEST.PAS Demonstrates streams, resource fonts, safer video detection
CHECKVT.PAS Automatic video detection choice dialog
NEWMOUSE.PAS Snap in replacement mouse cursor for extended video modes
COLORTXT.PAS Enhanced static texts with color. Mini shadows
EXESTRM.PAS Stream that reads resources from your EXE
TOYCFG.PAS Your personal code preferences file
TOYPREFS.PAS Your personal constants preferences file
TOYUTILS.PAS Odd Pascal code, hex conversion, file and string stuff
TVUTILS.PAS Odd TV bits, validators and routines
STRMREC.PAS All the stream records in one unit
DPMI.PAS DPMI assembler programming simplification code
VESA.PAS VESA support routines
TIP.TXT Assortment of unrelated information.
README.TXT This text.
Instructions ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
There are two demo programs, VIDEOTST and HELPTEST. All you have to do
is compile and run them for a quick demonstration. There is also a
RESTEST program demonstrating some advanced TVToys programming.
If you are upgrading from a previous version, check the Changes and
Porting sections in this file. All conditionals controlling conditional
compilation are now gathered in one central file called TOYCFG.PAS,
which you should edit to your liking. TOYAPP makes it easy to add TVToys
to your own programs.
If your mouse behaves oddly at times when running VIDEOTST, try
defining UseNewMouse in TOYCFG. (The mouse cursor jumps around when
you change video modes, but that's because the cursor stays at the same
position relative to the upper left corner)
If you use VIEWS.TPU/TPP as shipped by Borland, you can try to define
Color before compiling and running VIDEOTST.PAS. This spiffs up the Info
Dialog and demonstrates ColorTxt.
Conventions: The file TOYAPP contains the unit toyApp which
defines the object (class) TToyApp. Files are .PAS
if nothing else is stated. A "section" is a part of
this file, having the section name for header.
Read the header in each source file to get more information,
VIDEOTST.PAS especially.
Porting ▄
▀▀▀▀▀▀▀▀▀▀▀▀
News flash: TVTOYS DOES NOT SUPPORT smFont8x8 and smSpecialFont8x8,
MAKE SURE YOU REMOVE all such references. There is a ToggleVideoLines
function instead. smFont8x8 loses its use with all the new video modes.
You have to EXPLICITLY set the VideoModeChanged pointer to a font and
palette reloading procedure, see the VideoModeChanged section.
I am pro choice, which means that I try to give you the choice of using
a certain feature or not. This means that you have to do some editing to
incorporate the code in your own apps. TToyApp is an attempt at easing
the pains for you.
If you use TToyApp, you are stuck with the HelpFile and most of the
video code. Even if your application doesn't use Help, ALL the Help code
will be compiled into the application.
I believe in making TToyApp provide basic services, and the application
itself handling menu choices etc, but it gets tedious copying so I
decided to burn some things into TToyApp anyway.
The way I see it, you have to copy some of the HandleEvent from VideoTst
(but you have to edit that code anyway) and create some menus. The menus
include the problem of assigning command values, so I have refrained
from supplying default constructors like StdEditMenuItems. You are
welcome to write your own.
The dialogs now all have help contexts. By default, dummy values from
TOYPREFS are used. You should supply your own help context file whose
name must match that in HCFILE.PAS, or edit HCFILE. You don't have to
define all contexts at once, TOYPREFS will cover the ones missing. Make
sure you use toyPrefs BEFORE your HelpCtx file (unit X; uses toyPrefs,
MyHelpCtx, ...). You might have to rebuild sometimes. See HELPTEST.TXT
for a list of help contexts. Also notice that hcDosShell is defined in
Borland's APP unit, which easily leads to conflicts. Make sure your own
help context file is used after any other file defining help contexts.
Suggestions ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Copy TOYCFG to your project directory and edit to your liking if a
project calls for a different setup than you'd normally use.
Put toyPrefs very early in all uses lists, or your help context
values will be zero. Notice how toyPrefs always preceds HelpCtx in
the demonstration programs uses lists.
Inherit TToyApp and make a new unit (layer) that adds more
functionality, without editing TOYAPP itself. This way you can easily
upgrade your TVToys and still get an inheritable application with lots
of functionality burned in.
If you need to inherit from another application object, copy TOYAPP.PAS
and edit it so that TToyApp inherits that other application object.
The Info dialog and the Internal font choices are for demonstration
purposes. Use your choice of "Toggle video lines", "Select video mode"
and "Select font" only, or look at RESTEST.
Don't use disk file fonts, put them in a resource file and undefine
DiskFonts in TOYCFG to save a lot of code.
Assume that your mouse driver contains bugs, they all do. NewMouse can
help, but if the mouse driver is really buggy, there is little one can
do except change the driver. Avoid all drivers not made by Microsoft or
Logitech, they are usually just trash. Switch to a Microsoft or Logitech
driver, they should work with all mice. MS-DOS 6 and Windows comes with
a Microsoft driver, and Logitech drivers are available electronically.
Turbo Pascal 6.0 users ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
All the code can be converted for use with Turbo Pascal 6.0, if you are
desperate. The worst problem is that Borland Pascal 7.0 clears the data
segment before the program starts, which I make heavy use of. This means
that the code won't work as intended even if it compiles with TP6. Off
hand, I can think of VideoList, VesaVersion, VesaScanningSupported,
OldFront and OldCount causing trouble. Here is an example of what you
have to do:
const
OldFront : integer = 0;
OldCount : integer = 0;
I have seen code that clears the data segment for you, though.
VIDEOTST uses an Application^.ExecuteDialog, check out TVEDIT.PAS in
your TP6 TVDEMOS directory for an equivalent ExecDialog procedure.
You might want these, too:
const
Seg0040 : Word = $0040;
SegB000 : Word = $B000;
SegB800 : Word = $B800;
Compatibility Testing ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
This code has mainly been tested on three machines:
■ A 286 with with a Chips VGA card and an EGA monitor.
Also tested with a Video7 card which provided 132 column output on
the EGA monitor. No protected mode. First development machine.
■ An IBM PS/1 486/33 with Tseng VGA chips. VERY slow at scanning.
First protected mode attempts.
■ A Dual monitor Compaq 386 Portable with a Video7 VGA card and
Super VGA monitor. Current development platform.
I have tested three mouse drivers on the Video 7 equipped 386:
Microsoft Mouse driver version 8.20 and earlier does not work with
extended text modes, it assumes them to be graphics modes. All Logitech
mouse drivers should work with all text modes, I have only tested
version 6.20. Genius mouse driver version 10.20 does not work, it
doesn't realize what width the screen is. NewMouse fixes all this, but
if the mouse driver is buggy (like Genius) there might be minor
annoyances like the cursor jumping or temporarily disappearing at mode
switches. I suggest that you check what mouse driver you are using,
there are usually several on every hard disk. I use Microsoft's driver
version 8.20 even though it's buggy, but you know what you get.
VESA compatibility was tested using a PD Video7 TSR on the 386.
UNIVESA.EXE by Kendall Bennett is NOT a full VESA implementation, it
focuses solely on graphics video modes and will not provide the
necessary information to avoid having to physically test every video
mode.
If you promptly have to use UNIVESA or UNIVBE release 4.2 or earlier on
a Video 7 video card, make sure you define V7UniVesaKludge, since there
is a Video 7 specific bug in UNIVESA. Future versions of UNIVESA will
probably not suffer from this.
Coding Style ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Oh well, I do my best. I have tried to change my usual style slightly,
for your sake.
I started using fully qualified names, so you would know where to look
for the code. I now realize the browser will be of much more help, so
the qualified names are gone. There is no need to use fully qualified
names, as there are no name collisions.
I also started writing "Byte" instead of "byte", and so on for word,
boolean etc, but I doubt that I am consistently using that style.
The Video and VESA code is littered with {$IFDEF} for VESA, V7 and
DPMI support. I might make full support mandatory and remove all but
the DPMI IFDEFs. Let me know what you think.
I have changed the names of most procedures at least once, so there
might be references to old names in the documentation. Some code has
been moved, so some references to files might be misleading. I have
tried to spot most errors.
You will probably feel that I am overindenting my code, sigh.
Protected Mode Information ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The code was originally developed and tested on a 286 without protected
mode support. Development has now moved to a 386 with 4 Mb of memory and
a Video7 VGA card.
All the code has been tested in protected mode, especially the Video7,
Vesa and NewMouse code, and it works for me...
Overlay Information ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
You can overlay all units EXCEPT NewMouse, which contains an interrupt
handler. It's a very small unit anyway, about 530 bytes.
PC Video Modes ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Turbo Vision only knows about three video modes, and there is a reason
for that. These three are the only "standard" 80 column text modes, all
other video modes are manufacturer specific. All modes are referred to
by number, and the three Turbo Vision knows about are number 2, 3 and 7.
Numbers can range from 0 to 127, where most of the first 19 are used by
VGA cards. Numbers above 19 are used for extended video modes.
Naturally, all manufacturers number their video modes differently, even
if the screen size is the same. This means that you can't easily set a
80x60 video mode, for instance, since you wouldn't know what mode number
to refer to, unless you know the brand of the video card. You might not
even know if the video card supports 80x60, but your program could find
out. The monitor might not like 80x60 either, but a program cannot
detect if a VGA monitor is suited for Super VGA video modes.
There is now a new function, FindSimilarVideoMode(Cols,Rows), that will
return the number of a video mode which is about Cols wide and Rows
high. You can pass the mode number to SetSpecialVideoMode directly.
Remember to use ScanVideoModes first, and make sure StoreModeData in
TOYCFG.PAS is defined (it isn't by default). FindSimilarVideoMode uses a
simple approach, but you can write your own algorithm.
Video 7 ▄
▀▀▀▀▀▀▀▀▀▀▀▀
This package supports Video 7 video cards. Certain design decisions were
made with Video 7 in mind (overly complicating things).
Video 7 cards do not recognize any text video mode numbers above 19 (see
above) if you use the normal BIOS interrupt call, you must use a special
Video 7 call. On the other hand, video mode 1 corresponds to the last
Video 7 specific video mode set with such a Video 7 call. That is, if
you set a 80x60 video mode with a Video 7 interrupt (the only way), you
can use a normal BIOS call setting mode 1 and get the last Video 7
specific mode set.
This also means that if you ask a Video 7 BIOS in the normal way what
video mode is set, the answer will be 1 for all extended video modes.
This creates problems as mode 1 is a standard 40x25 mode. Sometimes you
will get a 40x25 mode when you least expect it, usually when you
terminate your program abnormally inside the IDE. This only happens if
you have a Video 7 video card.
The Improved Help File ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
HELPFILE.PAS is an improved help file with back tracking and custom key
help screens. See HELPTEST.PAS for a demonstration.
The HelpFile code is a modified TP7 HelpFile with some bugs removed,
most notably a bug that crashes everything if the help topic is empty.
There should be no difficulty upgrading your programs to use the
improved HelpFile, just make your application object inherit TToyApp and
define a status line, see HELPTEST. Make sure you set HelpFileName to
your application's Help file name and everything will be taken care of
for you.
Extended Video Mode Support Code ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The units Video, ModeDlg, TVVideo and VESA provide extended video mode
support. See VIDEOTST and RESTEST for a demonstration.
You CANNOT use smFont8x8 and smSpecialFont8x8 any more. REMOVE all
references to them.
Video7 and VESA support are defined automatically. Modify TOYCFG.PAS to
your liking.
VESA function calls take priority. CheckVideoType will still look for
all video types supported, though. You can check for only some video
types by changing the VideoTypesToCheck variable. CheckEVGA will always
be called, this works with most computers, but not the Vesa and Video 7
checks. This is a Video BIOS problem on some machines. The Vesa
implementation might also be so buggy that the user rather lived without
it. VideoTypesToCheck lets you configure video support at run time.
How it all works:
(This is a very long description! If you inherit TToyApp all you have to
do is copy the uses list, some HandleEvent lines, the cmXXXX list and
some menu code from VIDEOTST to make things work)
First call CheckVideoType. This will set VideoType, Video7 and
VesaVersion to appropriate values. If VesaVersion is zero, no Vesa
support was detected. (TToyApp.Init does this for you). You can call
CheckVesa, CheckVideo7 and CheckEVGA yourself if you want greater
control, or use VideoTypesToCheck.
Call SetupVideoList to construct a list of available video modes. If a
VESA video card is detected, attempts will be made to directly inquire
about available video modes. This might not be supported by the video
card since it is not mandatory in the VESA standard.
If the VESA test fails, ScanEVGAModes will be used to determine video
modes.
ScanEVGAModes takes a somewhat simple and stupid approach to determine
what video modes are available: It tries to set every video mode from 0
to 127 to see if the BIOS responds by setting more or less legal values
in the BIOS data segment. This might not work all that well all the
time, see VIDEOTST.PAS for a list of caveats. The only other way (apart
from VESA) of determining available video modes is to use lists of all
video modes for all cards manufactured.
Use SelectVideoModeDialog to put up a TV dialog that lets the user
choose from available modes.
To avoid unnecessary scanning, you can use the SaveVideoModes and
LoadVideoModes commands to save and restore the scanning results to/from
disk.
If you don't like the format of the information (not very easy to read,
maybe?) presented in the selection dialog, make changes in the AddMode
procedure in MODEDLG.PAS.
To use the video mode routines, use this as a checklist:
1) Always start out by determining the current video system.
(TToyApp.Init handles all this automatically)
CheckVideoType; (* Always start with this command *)
Or define AutoCheckVideoType in TOYCFG.PAS, but then you can't
overlay VIDEO.PAS anymore.
2) Check that we're in fact dealing with a EGA/VGA before using
ScanEVGAModes. You can simply shut off the command:
if VideoType=Other then
DisableCommands([cmVideoMode, cmVideoLines, cm14p, cm16p]);
3) Put up some sort of warnings before we start scanning...
HasToScan is false if we already know what video modes are
available. VesaScanningSupported is true if we don't have to
physically set every video mode to see if it is supported. You might
want to put up different warnings depending on what will actually
happen, see RESTEST for a simple example.
4) To scan and then select video mode:
SetupVideoList;
SelectVideoModeDialog;
If you use resources, try this:
SetupVideoList;
SelectVideoMode(
PSelectVideoModeDialog(RezFile.Get('VideoModeDialog')));
5) To save the video modes found during scanning, use StoreVideoModes:
var
S : TDosStream;
RegisterObjects;
S.Init('VIDEOTST.INI', stCreate);
StoreVideoModes(S);
S.Done;
Use LoadVideoModes to restore them. See RESTEST for an advanced
example.
6) Remember to change all your old references to SetScreenMode to
SetSpecialScreenMode, but...
7) YOU CANNOT USE smFont8x8 or smSpecialFont8x8! TVToys does not
support this any longer, there is now a ToggleVideoLines procedure.
You can also use the SetInternalFont(Internal8x8Font) procedure.
8) This code has to trash Turbo Vision's StartUpMode to get by
"internal security".
Since Video7 cards use video mode 1 to signify the last extended
video mode used, special care must be taken to provide intelligent
StartupMode behaviour if Video7Support is defined. TToyApp uses
VideoState objects and handles everything transparently for you.
9) If you want to be on the safe side and not immediately detect all
sorts of video hardware, look at RESTEST.PAS for some ideas.
Custom Fonts ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
FontFile is a unit that lets you access fonts stored on disk in a
variety of formats. Current supported formats are version 1.0 and
version 2.0 of Michael J Mefford's (Ziff Communications) FontEdit
(source published in PC Magazine and available almost everywhere) and my
own format. I have a Turbo Vision font editor that will be made
available sometime, but you can try to talk me out of a beta. I also
have about 60 fonts, a few of which are useful.
Defining the font is only possible on EGA/MCGA/VGA cards. You can do
it on Hercules cards too, but I have lost all my documentation files.
The font is only temporarily changed. If the video mode changes, the
font changes to a standard video card one. Shelling to DOS provides
ample opportunity to change the video mode.
FontDlg.SelectFontDialog(FontPath:String; Res:PResourceFile) searches
for fonts in the current directory and in the Res resource file and
presents a list for the user to choose from.
You have to define DiskFont if you want to look on disk and ResFont if
you want to look in the resource file. You can define both at once if
you like. If you don't, pass dummy parameters like '' and Nil.
SelDiskFont is 3K code. See RESTEST for a resource example.
The FontPath directory should have one or more font COM files in any of
the above formats. Use the empty string ('') if you want to search the
current directory, or ExeDir to search the executable file's directory
(if you inherit from TToyApp).
The resource file must contain a StringCollection resource saved under
the key FONTLIST (see TOYPREFS and RESTEST) with the keys of the
TFontFiles available in the stream.
You can load a disk font with the LoadDiskFont procedure, but if that
fails there will be an error message box. To load a specific font
without getting an error message if it fails, use the FontFiles unit
like this:
var
Font : FontFile;
if Font.DoRead(FileName) then (* Font.Read uses "Error" MsgBox on error *)
Font.Display;
You can also directly load a font from a stream, a resource file for
instance:
RegisterFontFile;
LoadResFont(RezFile, 'CHIC12');
The DoubleString unit provides a special kind of string, actually one
block with two strings right after another. This is used in the font
selection dialog to keep track of corresponding file names and resource
keys.
Run VIDEOTST and RESTEST to see these units in action.
The NewMouse Unit ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
NewMouse is a quick and dirty solution for buggy mouse drivers that
don't know a thing about any video modes except the "standard" ones. If
you have a Logitech mouse driver, you will probably never have any
problems, but others will.
Most mouse drivers have problems with video modes they are not familiar
with. They might not let the cursor travel across all the screen, or
worse, think that what is in fact a text mode is a graphics mode and
present a "graphics mode" mouse cursor (a bunch of garbage).
NewMouse simply contains its own routines for drawing a mouse cursor.
NewMouse relies on BIOS information to determine the width of the
screen. The screen is always assumed to be in text mode. If you want to
switch to graphics mode, you have to take some precautions. See
NEWMOUSE.PAS.
NewMouse has no hardware cursor support, so the cursor will always be
drawn in the standard text mode way. You cannot change the appearance of
the mouse cursor without turning NewMouse off by using
UseNewMouse(False).
Since NewMouse solely focuses on drawing a mouse cursor, there will
still be a text mode mouse cursor if you run a TV application windowed
(not full screen) in Windows enhanced mode. Looks funny. Don't know what
to do about it.
To use NewMouse, all you have to do is define UseNewMouse in TOYCFG.
This makes TToyApp use NewMouse and automatically turns it off in DOS.
It seems you cannot use NewMouse if you want to debug with TDX v3.2, as
TDX doesn't like changing the mouse interrupt?
You CANNOT overlay the NewMouse unit.
EXE Stream Unit ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The Exe stream unit allows you to add your own resources to an EXE file.
You can now put your Help file in the EXE file by just appending it as
would it be a resource collection file and defining ExeHelp before
recompiling TOYAPP.PAS. This only seems to work for real mode EXEs.
All EXE stream seeks are relative to the resource's first header byte.
You can also easily add your own resources as long as you follow Borland's
system for EXE additions, see EXESTRM.PAS.
VideoModeChanged Variable ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
The procedure TVVideo.VideoModeChanged is called whenever the video mode
has changed in the TV environment (whenever InitTVVideo us called).
This is a procedure pointer, so you can hook your own code if you want.
The default is to do nothing, but you can point it to
FontDlg.ReloadLastFont or TVPal.ReloadLastPalette or
FontDlg.ReloadFontAndPalette to achieve different results. You have to
do this explicitly, it's no longer done automatically.
See RESTEST and VIDEOTST for two examples.
Changes ▄
▀▀▀▀▀▀▀▀▀▀▀▀
1.1:
ColorTxt draw method changed. Mini shadows.
1.3:
Docs:
Porting, Suggestions and PC Video modes sections added in this file.
Prefs:
All conditionals in one file, TOYCFG.PAS. You should delete all other
conditional defines, ie in Compiler Options. Remember to edit your
include path if you compile from another directory.
TOYPREFS added.
Fonts:
Custom fonts and font files. Streamable fonts. Font selection dialog.
RESTEST font resource demo added.
Help:
SwitchToTopic and PopHelp combined to ShowHelp.
Last highlighted topic remembered in HelpFile.
Help contexts are not commented any more, see TOYCFG, TOYPREFS and
HCFILE and the Porting section.
Borland empty topic bug found and fixed.
Fixes to enable Range Checking.
NewMouse:
NewMouse doesn't use code segment any more, DosShell bug fixed.
Use UseNewMouse ONLY when mouse cursor is hidden.
You don't have to (you should NOT) put NewMouse in the uses list if
you use TToyApp and define UseNewMouse.
Video:
TVVIDEO NO LONGER SUPPORTS smFont8x8, use ToggleVideoLines.
FindSimilarVideoMode added to ModeDlg.
Current mode read from BIOS, not BIOS data (ATI fix from D Baldwin)
Video.VideoTypesToCheck controls (run-time) what video checks will
actually be performed, default is all supported.
A big DPMI bug from the Vesa code fixed. Thanks to Marek Bojarski for
putting up with me.
RESTEST and CHECKVT added.
Other:
TOYAPP added. Inherit TToyApp for easy application porting.
EXE stream added, lets you put the help text in the EXE.
RESTEST font resource, config file app demo added.
1.4:
Help:
Another Borland bug fixed, topic link spilling.
Last highlighted topic bug fixed.
Video:
COLORBOX added, instant color selection with color propagation.
PAL, TVPAL added: Palette routines, TV palette changing dialog.
RESTEST updated to demonstrate TVPal and ColorBox.
ReloadLastFont variable GONE, you must now EXPLICITLY assign a
value to VideoModeChanged. See the VideoModeChanged section.
Other:
STRMREC created, all stream registration records in one file.
SCROLL, scrollbars with instant dragging response.
TVUTILS, odd bits and pieces, validators.
VideoModeChanged section added.
Credits ▄
▀▀▀▀▀▀▀▀▀▀▀▀
All dialogs designed and generated with Dialog Design 4.0 available on
Compuserve and by anonymous ftp to garbo.uwasa.fi in directory
/pc/turbovis and oak.oakland.edu in /pub/msdos/turbovis.
Thanks to David Baldwin, who also contributed the original ColorTxt
unit and an ATI fix.
NewMouse, VESA and DPMI bug fixes and lots of other suggestions from
Marek Bojarski without whom TVToys would be buggier than a mouse driver.
I finally found a VESA TSR for Video7 that contained TEXT mode support.
Thanks to Gary Lorenson.
All Video7 and VESA information derived from Ralf Brown's famous
interrupt listing.
DPMI information from Borland source and the official DPMI
specifications.
This project would have been utterly impossible without the help of
Borland's run time source, or for that matter, Borland Pascal 7.0...
Author, Support, Info, Bugs etc ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
If you would like to see further enhancements to this code, write me a
letter telling me what you like and don't like, what works and what
doesn't, and what improvements you want to see.
Since I am a computer science student with no income, I would very much
appreciate a financial contribution. Get in touch with me if you feel
that you want to support this package financially. Unfortunately a check
costs me SEK 70 (almost $10) to cash in, so cash or wire is best for me!
I accept orders for the latest version and will send invoices by
arrangement.
Bug reports, enhancements, contributions, credits, postcards and money
are always welcome!
My internet address:
d91-pbr@nada.kth.se
You can reach me from CompuServe by sending mail to:
INTERNET:d91-pbr@nada.kth.se
Mail:
Peter Brandström (Peter Brandstrom)
Roslagsgatan 10
S-113 55 Stockholm
Sweden, Europe
To Do List ▄
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Video mode selection dialog help texts produced by native English
speaking person. Volunteers?
Merging HelpTest and VideoTst using the above help texts for
demonstration.
Easier internationalization (is anyone really into this?)
More toys? (I have a 64K+ editor under construction)